package com.tabnet.dao;

import java.util.Map;

import com.tabnet.beans.personnes.Client;

/**
 * <p>Interface DAOClient</p>
 * @author Corentin, Cyril, Neven, Anabella
 * */
public interface DAOClient {

	/**
	 * <p>Procédure addClient<br />
	 * Ajoute un client dans la base de données</p>
	 * @param pClient : objet Client
	 * @throws DAOException
	 */
	public void addClient(Client pClient) throws DAOException;
	
	/**
	 * <p>Procédure updClient<br />
	 * Modifie un client dans la base de données</p>
	 * @param pClient : objet Client
	 * @param pMDP : le mot de passe de confirmation
	 * @param pModifmdp : true si le mot de passe est modifier
	 * @throws DAOException
	 */
	public void updClient(Client pClient, String pMDP, boolean pModifmdp) throws DAOException;

	/**
	 * <p>Fonction getClients<br />
	 * Retourne une collection des clients qui sont présent dans la base de données</p>
	 * @return Map<String, Client> : une table des clients
	 * @throws DAOException
	 */
	public Map<Integer, Client> getClients() throws DAOException;
	
	/**
	 * <p>Fonction checkId<br />
	 * Vérifie si l'identifiant utilisé par le client existe déjà dans la base de données</p>
	 * @param pId : un identifiant client
	 * @return true si identifiant disponible, false sinon
	 * @throws DAOException
	 */
	public boolean checkId(int pId) throws DAOException;
	
	/**
	 * <p>Fonction checkMail<br />
	 * Retourne vrai si l'adresse mail du client est disponible dans la base de données</p>
	 * @param pMail : une adresse mail
	 * @param pId : un identifiant client
	 * @return true si l'adresse mail est disponible, false sinon
	 * @throws DAOException
	 */
	public boolean checkMail(String pMail, int pId) throws DAOException;
	
	/**
	 * <p>Fonction checkMdp<br />
	 * Contrôle que le client à rentrés les bons identifants de connexion</p>
	 * @param pMail : une adresse mail
	 * @param pMDP : un mot de passe
	 * @return Identifiant du client
	 * @throws DAOException
	 */
	public int checkMdp(String pMail, String pMDP) throws DAOException;
	
	/**
	 * <p>Focntion getClient<br />
	 * Retourne un client à partir de son identifant dans la base de données</p>
	 * @param pId : identifiant d'un client
	 * @return Client : objet CLient
	 * @throws DAOException
	 */
	public Client getClient(int pId) throws DAOException;
}
